/*
 * Author: 李波(Edwin Lee)
 * Date: 2024-08-31 02:10:05
 * FilePath: /mprpc/src/include/zookeeperutil.h
 * LastEditTime: 2024-08-31 04:05:44
 * version: 1.0
 * Description: 封装zookeeper开发包的客户端类
 */

#include <semaphore.h>
#include <zookeeper/zookeeper.h>
#include <string>

class ZkClient
{
public:
    ZkClient();
    ~ZkClient();
    //description: 启动连接zkserver
    //Date: 2024-08-31 04:00:20
    void start();
    //description: 在zkserver上根据指定的path创建znode节点
    //param path:指定的zk路径
    //param data:znode节点输入的信息
    //param datalen:data的长度
    //param state:是临时节点还是永久节点，默认为永久节点0
    //Date: 2024-08-31 04:00:44
    void create(const char* path, const char* data, int datalen, int state=0);
    //description: 根据指定的znode节点路径，获得节点的值
    //param path:节点路径
    //return {string} 返回节点的值
    //Date: 2024-08-31 04:04:53
    std::string getData(const char* path);
private:
    // zk的客户端句柄
    zhandle_t* zhandle_;
};